User interfaces may include a number of user components or elements, such as menus, controls, buttons, windows, etc. While used in various applications, user components can be moved, resized, made visible, made hidden, created, and/or destroyed. In addition, some user components are associated with other user components, such that updating a state of one user component can impact the state of another user component. There is, currently, no easy way to obtain properties, such as position properties, of a user interface (UI) component that is currently displayed on a screen in a UI technology agnostic way. Further, events that affect various UI elements cannot be easily propagated to other UI components or other code. One outcome of this is that UI components, especially those controlled by different code bases, cannot easily react to events. Being unable to react to events makes keeping the UI consistent and in sync with the application and other UI elements difficult.